package com.example.utils; // 换成你项目的包名

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class CorsFilter implements Filter {
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        // 允许的前端域名（必须和你前端页面的地址完全一致，比如http://127.0.0.1:5500）
        response.setHeader("Access-Control-Allow-Origin", "http://127.0.0.1:5500");
        // 允许的HTTP方法（GET、POST、OPTIONS等）
        response.setHeader("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
        // 允许的请求头（前端用了Content-Type，所以要声明）
        response.setHeader("Access-Control-Allow-Headers", "Content-Type");
        // 允许携带Cookie等凭证（如果前端需要传Cookie，设为true）
        response.setHeader("Access-Control-Allow-Credentials", "true");

        // 特殊处理预检请求（OPTIONS）：直接返回成功，无需后续业务逻辑
        if (((HttpServletRequest) req).getMethod().equals("OPTIONS")) {
            response.setStatus(HttpServletResponse.SC_OK);
            return;
        }

        // 继续执行后续过滤器或Servlet逻辑
        chain.doFilter(req, res);
    }

    // 下面两个方法留空即可（初始化和销毁时无需额外操作）
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {}

    @Override
    public void destroy() {}
}